/*
 * Copyright (c) 2025 Industrial Software Feature Database
 */
package com.comac.ins.bomt.service;

import com.comac.ins.bomt.common.enums.BomDetailTypeEnum;
import com.comac.ins.bomt.domain.BomInfo;
import com.comac.ins.common.core.domain.model.LoginUser;
import jakarta.servlet.http.HttpServletResponse;

import java.nio.file.Path;
import java.util.List;

/**
 * Bom导出服务
 *
 * @author zhanghongyi
 * @date 2024 /8/23
 * @description BomExportService
 */
public interface BomExportService {
    /**
     * 导出标准装机清单.
     *
     * @param loginUser the login user
     * @param bomInfo   the bom info
     * @param exportDir 输出目录（用于批量导出）
     * @return 导出文件Id
     */
    Long exportStandardBom(LoginUser loginUser, BomInfo bomInfo, Path exportDir);

    /**
     * 导出强度数模清单.
     *
     * @param loginUser the login user
     * @param bomInfo   the bom info
     * @param exportDir 输出目录（用于批量导出）
     * @return 导出文件Id
     */
    Long exportStrengthBom(LoginUser loginUser, BomInfo bomInfo, Path exportDir);

    /**
     * 导出强度数模清单Vs标准装机清单.
     *
     * @param loginUser the login user
     * @param bomInfo   the bom info
     * @param exportDir 输出目录（用于批量导出）
     * @return 导出文件Id
     */
    Long exportStrengthStandardCompare(LoginUser loginUser, BomInfo bomInfo, Path exportDir);

    /**
     * 导出模型状态清单Vs强度数模清单.
     *
     * @param loginUser the login user
     * @param bomInfo   the bom info
     * @param exportDir 输出目录（用于批量导出）
     * @return 导出文件Id
     */
    Long exportStatusStrengthCompare(LoginUser loginUser, BomInfo bomInfo, Path exportDir);

    /**
     * 根据Bom类型和Id列表批量导出
     *
     * @param loginUser     the login user
     * @param aircraftModel the aircraft model
     * @param bomIds        the bom ids
     * @param bomDetailType the bom detail type
     * @param response      http响应
     */
    void exportBomByTypeAndIds(LoginUser loginUser, String aircraftModel, List<Long> bomIds, BomDetailTypeEnum bomDetailType, HttpServletResponse response);
}
